package db;

import java.util.List;

import db.jdbc.JdbcSystemAdministratorRepository;
import domain.Club;
import domain.SystemAdministrator;
import web.PaginationSupport;

/**
 * 系统管理员资源库接口
 */
public interface SystemAdministratorRepository {

    /**
     * 获取系统管理员的总数
     * @return 系统管理员的数量
     */
    long count();

    /**
     * 创建一个新的系统管理员
     * @param systemAdministrator 新系统管理员的信息
     * @return 新创建的系统管理员
     */
    SystemAdministrator save(SystemAdministrator systemAdministrator);


    /**
     * 根据ID查找系统管理员
     * @param systemAdminId 系统管理员的ID
     * @return 对应ID的系统管理员
     */
    SystemAdministrator findOne(int systemAdminId);

    /**
     * 根据用户名查找系统管理员
     *
     * @param userName 用户名
     * @param password 密码
     * @return 对应用户名的系统管理员 system administrator
     */
    SystemAdministrator findByUserName(String userName, String password);


    /**
     * 分页查找系统管理员
     *
     * @param pageNo   页码
     * @param pageSize 每页的数量
     * @return 分页的系统管理员列表
     */
    PaginationSupport<SystemAdministrator> findPage(int pageNo, int pageSize);


    /**
     * 更新系统管理员信息
     *
     * @param systemAdminID 系统管理员ID
     * @param userName  用户名
     * @param password  密码
     * @param email     邮箱
     * @param nickname  昵称
     * @param telephone 电话
     * @return 是否更新成功 boolean
     */
    boolean updateSystemAdministrator(int systemAdminID,String userName, String password, String email,String nickname,String telephone);

    /**
     * 更新系统管理员的密码
     * @param userName 系统管理员用户名
     * @param Password 新密码
     * @return 是否更新成功
     */
    boolean updatePassword(String userName, String Password);

    /**
     * 获取所有系统管理员
     * @return 所有系统管理员的列表
     */
    List<SystemAdministrator> findAll();
}

